home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #1 / Amiga Plus CD - 2000 - No. 1.iso / Tools / Dev / Meshwriter_lib / Library / samples / wave.c < prev   
C/C++ Source or Header  |  1999-12-03  |  3KB  |  90 lines

  1. /*
  2. **      $VER: wave.c 1.00 (20.3.1999)
  3. **
  4. **      Creation date     : 20.3.1999
  5. **
  6. **      Description       :
  7. **         MeshWriter testprogram shape module.
  8. **
  9. **
  10. **      Written by Stephan Bielmann
  11. **
  12. */
  13.  
  14. /*************************** Includes *******************************/
  15.  
  16. #include <meshwriter/meshwriter.h>
  17. #include <pragma/meshwriter_lib.h>
  18.  
  19. #include <math.h>
  20.  
  21. /**************************** Defines *******************************/
  22.  
  23. #define PI            3.14159265359
  24. #define WAVESTEPS     20
  25.  
  26. /*********************** Type definitions ***************************/
  27.  
  28. /********************** Private functions ***************************/
  29.  
  30. /********************** Public functions ****************************/
  31.  
  32. /********************************************************************\
  33. *                                                                    *
  34. * Name         : wave                                                *
  35. *                                                                    *
  36. * Description  : Draws a wave with the help of a formula got out of  *
  37. *                Plotter 3D by Sven Steiniger.                       *
  38. *                                                                    *
  39. * Arguments    : mesh    IN  : An initialized mesh handle.           *
  40. *                                                                    *
  41. * Comment      :                                                     *
  42. *                                                                    *
  43. \********************************************************************/
  44. void wave(ULONG mesh) {
  45.   ULONG m[3];
  46.   TOCLColor color;
  47.   TOCLVertex matrix[WAVESTEPS+1][WAVESTEPS+1];
  48.   ULONG x,y;
  49.   FLOAT u,v;
  50.  
  51.   MWLMeshMaterialAdd(mesh,&m[0]);
  52.   color.r=0,color.g=0,color.b=0;
  53.   MWLMeshMaterialDiffuseColorSet(mesh,m[0],&color);
  54.  
  55.   MWLMeshMaterialAdd(mesh,&m[1]);
  56.   color.r=255,color.g=0,color.b=0;
  57.   MWLMeshMaterialDiffuseColorSet(mesh,m[1],&color);
  58.  
  59.   MWLMeshMaterialAdd(mesh,&m[2]);
  60.   color.r=0,color.g=255,color.b=0;
  61.   MWLMeshMaterialDiffuseColorSet(mesh,m[2],&color);
  62.  
  63.   MWLMeshNameSet(mesh,"Wave");
  64.  
  65.   u=-PI;
  66.   for(x=0;x<WAVESTEPS+1;x++) {
  67.     v=-PI;
  68.       for(y=0;y<WAVESTEPS+1;y++) {
  69.         matrix[x][y].x=u;
  70.         matrix[x][y].y=v;
  71.         matrix[x][y].z=sin(u)+cos(v);
  72.  
  73.         v+=2*PI/WAVESTEPS;
  74.     }
  75.     u+=2*PI/WAVESTEPS;
  76.   }
  77.  
  78.   for(x=0;x<(WAVESTEPS);x++) {
  79.     for(y=0;y<(WAVESTEPS);y++) {
  80.       MWLMeshPolygonAdd(mesh,m[((ULONG)(matrix[x][y].z))+1]);
  81.       MWLMeshPolygonVertexAdd(mesh,&matrix[x][y]);
  82.       MWLMeshPolygonVertexAdd(mesh,&matrix[x+1][y]);
  83.       MWLMeshPolygonVertexAdd(mesh,&matrix[x+1][y+1]);
  84.       MWLMeshPolygonVertexAdd(mesh,&matrix[x][y+1]);
  85.     }
  86.   }
  87. }
  88.  
  89. /************************* End of file ******************************/
  90.